package com.dys.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.Map;
import java.util.Set;

/**
 * @className: com.dys.servlet.LoginServlet
 * @description: com.dys.servlet
 * @author: pine cone
 * @version: v1.0.0
 * @createTime: 2024/09/18 21:50
 */
public class LoginServlet extends HttpServlet {

    // @Override
    // public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
    //     System.out.println("进入登录的方法......");
    //     // 获取请求中的数据
    //     String username = req.getParameter("username");
    //     String password = req.getParameter("pwd");
    //     // 设置响应类型和编码方式
    //     res.setContentType("text/html;charset=utf-8");
    //     res.setCharacterEncoding("UTF-8");
    //     // 判断账号与密码是否正确
    //     String message = null;
    //     if ("admin".equals(username) && "123".equals(password)) {
    //         message = "登录成功!";
    //         res.getWriter().write(message);
    //     } else {
    //         message = "登录失败!";
    //         res.getWriter().write(message);
    //     }
    // }

    // @Override
    // protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    //     // 获取请求中的数据
    //     String username = req.getParameter("username");
    //     String password = req.getParameter("pwd");
    //     // 设置响应类型和编码方式
    //     resp.setContentType("text/html;charset=utf-8");
    //     resp.setCharacterEncoding("UTF-8");
    //     // 判断账号与密码是否正确
    //     String message = null;
    //     if ("admin".equals(username) && "123".equals(password)) {
    //         message = "登录成功!";
    //         resp.getWriter().write(message);
    //     } else {
    //         message = "登录失败!";
    //         resp.getWriter().write(message);
    //     }
    //     // 1.获取请求行相关数据 请求方式GET/POST 请求的资源路径 协议
    //     // 返回客户端浏览器发出请求时的完整URL。
    //     System.out.println("完整的URL: " + req.getRequestURL());
    //     // 返回请求行中指定资源部分。
    //     System.out.println("请求指定资源：" + req.getRequestURI());
    //     // 返回发出请求的客户机的IP地址。
    //     System.out.println("客户端的IP：" + req.getRemoteAddr());
    //     // 返回客户端的端口
    //     System.out.println("客户端的Port: " + req.getRemotePort());
    //     // 返回WEB服务器的IP地址。
    //     System.out.println("Web服务器的IP: " + req.getLocalAddr());
    //     // 返回WEB服务器处理Http协议的连接器所监听的端口。
    //     System.out.println("服务器端处理HTTP请求的端口：" + req.getLocalPort());
    //     // 返回主机名称
    //     System.out.println("主机名字：" + req.getLocalName());
    //     // 返回当前项目部署的名字
    //     System.out.println("当前项目部署名字：" + req.getContextPath());
    //     // 协议名称
    //     System.out.println("协议名：" + req.getScheme());
    //     // 请求方式
    //     System.out.println("请求方式：" + req.getMethod());
    //
    //     // 2.获取请求中所有的请求头
    //     // 根据请求头名或者请求头对应的值
    //     System.out.println("请求头或者请求头对应值：" + req.getHeader("Accept"));
    //     System.out.println("请求头或者请求头对应值：" + req.getHeader("user-agent"));
    //     // 获取请求中的数据
    //     System.out.println();
    //     // 获得全部的请求头名
    //     Enumeration<String> headerNames = req.getHeaderNames();
    //     while (headerNames.hasMoreElements()) {
    //         String headerName = headerNames.nextElement();
    //         System.out.println("每一个请求头：" + headerName);
    //         System.out.println(headerName + ":" + req.getHeader(headerName));
    //     }
    //
    //     // 3.获取请求数据
    //     // 在Servlet获取请求数据的方式 req.getParameter("key")://根据key获取指定value。
    //     System.out.println("------------获取请求数据--------------start--------");
    // }


    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // req获取参数
        // 如果 前端发过来的数据有数据名但是没有值, getParameter返回的是一个空字符串  ""
        // 获取的参数在提交的数据中名都没有,getParameter返回的是null
        String username1 = req.getParameter("username");
        System.out.println("有name属性,无值：" + username1);
        System.out.println("password: " + req.getParameter("pwd"));
        System.out.println("性别：" + req.getParameter("gender"));
        // hobby=1&hobby=2&hobby=3 想要获得多个同名的参数 getParameterValues 返回的是一个Sting数组
        String[] hobbies = req.getParameterValues("hobby");
        // 复选框
        System.out.println("爱好：" + Arrays.toString(hobbies));
        // textarea
        System.out.println("简介：" + req.getParameter("introduce"));
        // select
        System.out.println("下拉选择: " + req.getParameter("provience"));
        System.out.println("------------获取请求数据--------------end--------");
        System.out.println("********************************");
        // 如果不知道参数的名字?
        Enumeration<String> parameterNames = req.getParameterNames();
        while (parameterNames.hasMoreElements()) {
            String keyName = parameterNames.nextElement();
            String[] parameterValues = req.getParameterValues(keyName);
            System.out.println(keyName + ":" + Arrays.toString(parameterValues));
        }
        System.out.println("**************通过Map获取************start");
        Map<String, String[]> parameterMap = req.getParameterMap();
        Set<Map.Entry<String, String[]>> entries = parameterMap.entrySet();
        for (Map.Entry<String, String[]> entry : entries) {
            System.out.println(entry.getKey() + ":" + Arrays.toString(entry.getValue()));
        }
        resp.setContentType("text/html");
        resp.setCharacterEncoding("UTF-8");
        resp.getWriter().write("响应成功!");
    }
}
